﻿/**
 * @Description: 验证规则
	Authenticator的职责是验证用户帐号，是Shiro API中身份验证核心的入口点： 
	public AuthenticationInfo authenticate(AuthenticationToken authenticationToken)
	            throws AuthenticationException; 
	如果验证成功，将返回AuthenticationInfo验证信息；此信息中包含了身份及凭证；如果验证失败将抛出相应的AuthenticationException实现。
	 
	SecurityManager接口继承了Authenticator，另外还有一个ModularRealmAuthenticator实现，其委托给多个Realm进行验证，验证规则通过AuthenticationStrategy接口指定，默认提供的实现：
	FirstSuccessfulStrategy：只要有一个Realm验证成功即可，只返回第一个Realm身份验证成功的认证信息，其他的忽略；
	AtLeastOneSuccessfulStrategy：只要有一个Realm验证成功即可，和FirstSuccessfulStrategy不同，返回所有Realm身份验证成功的认证信息；
	AllSuccessfulStrategy：所有Realm验证成功才算成功，且返回所有Realm身份验证成功的认证信息，如果有一个失败就失败了。
	 
	ModularRealmAuthenticator默认使用AtLeastOneSuccessfulStrategy策略。
	 
	假设我们有三个realm：
	myRealm1： 用户名/密码为zhang/123时成功，且返回身份/凭据为zhang/123；
	myRealm2： 用户名/密码为zhang/123时成功，且返回身份/凭据为zhang@163.com/123，和myRealm1不同的是返回时的身份变了；
	myRealm3： 用户名/密码为wang/123时成功，且返回身份/凭据为wang/123；
 * @Author: 刘兴
 * @Date : 2016年7月20日
 * @package : com.firewolf.shiro.authenticationstrategy
 * @Java_Version : 1.7
 * @Version : 2016年7月20日下午3:14:24
 */
package com.firewolf.shiro.authentication;